#pragma once

#include <userver/components/component_base.hpp>
#include <userver/yaml_config/schema.hpp>

#include <clients/{{ name }}/client_impl.hpp>

namespace {{ namespace }} {

class Component final : public USERVER_NAMESPACE::components::LoggableComponentBase {
public:
    static constexpr std::string_view kName = "{{ name }}-client";

    Component(const USERVER_NAMESPACE::components::ComponentConfig& config, const USERVER_NAMESPACE::components::ComponentContext& context);
    
    Client& GetClient();
    
    static USERVER_NAMESPACE::yaml_config::Schema GetStaticConfigSchema();

private:
    ClientImpl client_;
};

}

template<>
inline constexpr auto USERVER_NAMESPACE::components::kConfigFileMode<::{{ namespace }}::Component> =
    USERVER_NAMESPACE::components::ConfigFileMode::kNotRequired;
